本文介紹 PHP 8.0.0
之後新增的功能 Named Arguments,也就是說,Named Arguments 功能可以全面應用在 Laravel 9 以後的版本。下圖是參考 Laravel #Support Policy
PHP Argument 和 Parameter 差異 一文中提到 function Parameter 和 Argument 有著對應關係:
<?php
public function sub($a, $b){
return $a - $b;
}
echo 'sub(4, 5) => '.sub(4, 5).PHP_EOL; // sub(4, 5) => -1
function Parameter 和 Argument 對應關係,經過 PHP 8.0.0 提供的 Named Arguments 後,往後使用 function 更加彈性。
操作只有 一 ~ 三個 Argument,加上依靠現行的編輯器 (VScode, PhpStorm ..等) 強大的輔助功能時,只要注意 Argument 順續和 Parameter 是否有存在預設值。
但是在操作 function 遇到多個 Argument 和 多個 Parameter 帶有預設值時,就蠻考驗經驗和記憶能力,例如 php setcookie()
<?php
// pho setcookie 設定:
setcookie(
string $name,
string $value = "",
int $expires_or_options = 0,
string $path = "",
string $domain = "",
bool $secure = false,
bool $httponly = false
): bool
慶幸 PHP 8.0.0 新增功能 『function 的 Argument List 可以尾隨逗號』,讓 Argument List 很長 或包含 長變數名稱 的情況下,可以方便地垂直列出參數,可以將 setcookie()
如下展示:
<?php
setcookie(
'test',
'',
time() + 60 * 60 * 2,
);
我第一次用 setcookie() 時,雖然是條列式的顯示,還是得花時間在確認 'test'
, ''
, time() + 60 * 60 * 2
是對應的是哪幾個 Parameter ?! 以及有沒有將 argument 對應到正確的位置上。
<?php
setcookie(
name: 'test',
expires: time() + 60 * 60 * 2,
);
Named Arguments 除了跳過具有預設值的 Parameter 之外,還有個好處是可以清楚地了解那個 Argument 的作用;這在具有多個 Parameter 的 function 中特别有用。詳細的 Named Arguments 應用 - 參考 PHP Named Arguments
1 Laravel #Support Policy
2 PHP Argument 和 Parameter 差異
3 php setcookie()
4 PHP Named Arguments